/*
 * ================================================================================变量定义区
 */
var showCount = 10; //定义每页显示条数
var currentPage = 1;//全局变量，当前页

var operateType = 0; // 区分新增加组还是更新组[0：新增加，1：更新组]

var groupId;
var chooseIds = new Array();//定义用户的id组
/*
 * ================================================================================页面初始化函数
 */
$(function()
{
	// 展示用户所拥有的组
	showGroupList();
	
	//从用户组中删除用户
	$("#deleteUser").click(function()
	{
		deleteUser();
	});
	
	// Submit department changes.
	$("#btnSubmit").click(function()
	{
		submitData();
	});
	
});


/*
 * ================================================================================函数定义区
 * 
 */

/**
 * Validate fields and Commit department changes fields.
 */
function submitData()
{
	// Setting the rules for fields in form.
	var validateRules = 
	{
				
			// 自定义校验规则
			rules: 
			{
				groupName:
				{
					required			: true,
					maxlength			: 32,
					remote:
					{
						type:"post",
						async: false,
						url:BASE_PATH+"/groupManagement/groupNameValidate.do",
						data:
						{
							groupId : function()
							{
								return groupId;
							},
							operateType : function()
							{
								return operateType;
							},
							groupName	:	function()
							{
								return $.trim($("#groupName").val());
							},
							createUser	:	function()
							{
								return $("#singleIdHidden").attr("value");
							}
			             }
			        }
				},

				groupDesc:
				{
					required:true,
					maxlength:128
				}
			},
			
			// 自定义校验提示信息
			messages:
			{
				groupName:
				{
					required	:"请输入group_name",
					maxlength	:"group_name过长，请重新输入",
					remote		:jQuery.format("group_name已存在，请重新输入")
				},
				
				groupDesc:
				{
					required	:"请输入group_desc",
					maxlength	:"group_desc过长，请重新输入"
				}
			}
	};	
	
	var validateResult = $("#groupForm").validate(validateRules).form();
	if(!validateResult)
	{
		openAlert("请按提示填写完整信息");
		return;
	}
	else
	{
		if( operateType == 0)
		{	// 新建组操作
			insertGroupCommit();
		} 
		else if( operateType == 1)
		{	// 更新组操作
			updateGroupCommit();
		}
	}
}

/**
 * 点击新增加组按钮
 */
function addGroup()
{
	// 隐藏上次的错误提示信息
	resetFieldsCheck();
	
	$("#userListTable").hide();
	$("#groupInfoDiv").show();
	$("#groupName").val( "" );
	$("#groupDesc").val( "" );
	operateType = 0;
}

/**
 * 点击更新组按钮
 */
function updateGroup()
{
	if( groupId == undefined )
	{
		openAlert("请选择一个组！");
		return;
	}
	// 隐藏上次的错误提示信息
	resetFieldsCheck();
	
	$("#userListTable").hide();
	$("#groupInfoDiv").show();
	operateType = 1;
	var groupDesc = $("#" + groupId).find("span[name='data-groupDesc']").text();
	var groupName = $("#" + groupId).find("span[name='data-groupName']").text();
	$("#groupName").val( groupName );
	$("#groupDesc").val( groupDesc );
}

/**
 * 展示用户组列表
 */
function showGroupList()
{
	var singleId = $("#singleIdHidden").attr("value");
	$.ajax(
	{
		type: 'POST',
        url: BASE_PATH +'/groupManagement/selectUserGroupList.do' ,
        dataType:"json",
        data:
        {
        	"createUser":singleId
        },
        cache:false,
        success:function(data,textStatus)
        {
        	var html = "";        	
        	if(data != null)
        	{
        		//解析data, 组装成html
	        	for( var i = 0; i < data.length; i ++)
	        	{
	        		var groupDesc= data[i].groupDesc;
	        		var groupName= data[i].groupName;
	        		html +='<div onclick="chooseRowid(this);"';
	        		html +='class="chooseGroup" id="' + data[i].groupId +'" >';
	        		html +='<span style="text-align: left; width: 50px;" name="data-groupName" title="' + switcHtml( groupName ) + '">' + switcHtml( groupName ) + '</span>';
	        		html +='<span style="display:none;" name="data-groupDesc">' + switcHtml( groupDesc ) + '</span>';
	        		html +='</div>';
	        	}
        	} 
        	else
        	{
        		html = '<div class="chooseGroup"><span style="text-align: left; width: 50px;">No groups.</span></div>';
        	}
        	
        	$('#groupDiv').html(html);	
        	if( $('#groupDiv').children("div").length > 0 )
        	{
            	$('#groupDiv').children("div")[0].click();
        	}
        },
        
		error:function(e)
		{
			 openAlert("加载数据错误！"); 
			 return;
		}
	});
}

/**
 * 选择一行
 */
function chooseRow(o) 
{
	var id = $(o).attr("id");
	var flag = false;
	var index = null;
	if (chooseIds.length > 0) 
	{
		for (var i = 0; i < chooseIds.length; i++) 
		{
			if (chooseIds[i] == id) 
			{
				index = i;
				flag = true;
				break;
			}
		}
	}
	
	if (flag) 
	{
		$(o).removeClass("list_choosedRow");
		chooseIds = deleteArrayByIndex(index, chooseIds);
	} 
	else 
	{
		$(o).addClass("list_choosedRow");
		chooseIds.push(id);
	}
}

/**
 * 选择用户
 */
function deleteGroupUserNew() 
{
	if (chooseIds.length > 0) 
	{
		$.ajax(
		{
			url : BASE_PATH + "/groupController/deleteGroupUser.do?chooseIds="
					+ chooseIds,
			success : function() 
			{
				$("tr").find("#" + groupId).each(function(i, val) 
				{
					$(this).click();
				});
			}
		});
	} 
	else 
	{
		openAlert("请至少选择一个用户！");
	}
}

/**
 * 选中组，展示组下所有的用户
 */
function chooseRowid(row) 
{
	// 控制新建组、更新组弹出DIV和用户列表切换
	$("#userListTable").show();
	$("#groupInfoDiv").hide();
	
	var rowid = row.id;
	if (groupId) 
	{
		$("#" + groupId).removeClass("list_choosedRow");
	}

	if (rowid != groupId) 
	{
		groupId = rowid;
		$("#" + groupId).addClass("list_choosedRow");
	} 
	else 
	{
		$("#" + groupId).addClass("list_choosedRow");
	}

	//初始化列表，取第一页数据
	getDataList(currentPage);
}

/**
 * 删除一个组
 */
function deleteGroup() 
{

	if( groupId == undefined )
	{
		openAlert("请选择一个组！");
		return;
	}
	
	resetFieldsCheck();
	var temp = [];
	temp.push[1];	
	openConfirm("确认删除选中的组吗？", this, function()
	{
		if ( groupId ) 
		{
			$.ajax(
			{
				type: 'POST',
				url : BASE_PATH + "/groupManagement/deleteGroups.do?groupIds="
						+ groupId,
				dataType:"json",
				success : function(data) 
				{
					if( data > 0 )
					{
						openAlert('删除组成功',function()
						{
							location.reload();
						}
						);
					} 
					else 
					{
						openAlert('删除失败');
					}
				}
			});
		} 
		else 
		{
			openAlert("请选择一个组！");
		}
	}, temp);
}

/**
 * 重置校验错误信息
 */
function resetFieldsCheck()
{
	$("#groupName").removeClass("validate-input-error");
	$("#groupDesc").removeClass("validate-input-error");
	$("div[for='groupName']").remove();
	$("div[for='groupDesc']").remove();
}

/**
 * 更新一个组
 */
function updateGroupCommit() 
{
	var groupName = $.trim($("#groupName").val());
	var groupDesc = $.trim($("#groupDesc").val());
	
	if ( groupId ) 
	{
		$.ajax(
		{
			type: 'POST',
			url : BASE_PATH + "/groupManagement/updateGroup.do",
	        dataType:"json",
	        data:
	        {
	        	"groupId"	:	groupId,
	        	"groupName"	:	groupName,
	        	"groupDesc" :	groupDesc
	        },
			success : function() 
			{
				openAlert('更新组成功',function()
				{
					location.reload();
				});
			}
		});
	} 
	else 
	{
		openAlert("请选择一个组！");
	}
}

/**
 * 插入一个组
 */
function insertGroupCommit() 
{
	var createUserName = $("#singleIdHidden").attr("value");
	var groupName = $.trim($("#groupName").val());
	var groupDesc = $.trim($("#groupDesc").val());
	
	$.ajax(
	{
		type: 'POST',
		url : BASE_PATH + "/groupManagement/insertGroup.do",
        dataType:"json",
        data:
        {
        	"createUser"		:	createUserName,
        	"lastModifyUser"	:	createUserName,
        	"groupName"			:	groupName,
        	"groupDesc"			:	groupDesc
        },
		success : function() 
		{
			openAlert('新建组成功',function()
			{
				location.reload();
			});
		}
	});
}

/**
 * 针对组的操作进行取消
 */
function cancelGroup()
{
	$("#userListTable").show();
	$("#groupInfoDiv").hide();
}


/**
 * 获取已经在该组下的用户列表数据
 * @param currentPage 请求的页码
 */
function getDataList(pageIndex)
{
	$.ajax(
	{
		type: 'POST',
        url: BASE_PATH +'/groupManagement/queryUsersInGroup.do',
        dataType:"json",
        data:
        {
        	"showCount"		            :showCount,
        	"currentPage"	            :pageIndex,
        	"groupId"		            :groupId,
        	"query_condition_field_list":"groupId"
        },
        cache:false,
        success:function(data,textStatus)
        {
        	var html = "";        	
        	var pageData = data;
        	var totalResult = pageData.queryParam.totalResult;
        	if(pageData.queryResult != null)
        	{
        		//解析data, 组装成html
	        	$.each(pageData.queryResult,function(i,n)
	        	{
	        		html += '<tr onclick="chooseRow(this,false);"  id="tr_index_'+i+'" class="chooseUser">';
	        		html += '<td style="text-align:left;" title='+switcHtml(n.username)+'><input type="hidden" name="hd_userName" value="'
	        				+switcHtml(n.username)+'"/>'+switcHtml(n.username)+'</td>';
	        		html += '<td style="text-align:left;" title='+switcHtml(n.cn_name)+'>'+switcHtml(n.cn_name)+'</td>'; 
	        		if( n.dept_name == null || n.dept_name == "") 
	        		{
		        		html += '<td></td>';
	        		} 
	        		else 
	        		{
		        		html += '<td style="text-align:left;" title='+switcHtml(n.dept_name)+'>'+switcHtml(n.dept_name)+'</td>';
	        		} 
	        		html += '</tr>';
	        	});  
        	} 
        	else
        	{
        		html = '<tr><td colspan="2">No items.</td></tr>';
        	}
        	
        	$('#tBodyList').html(html);
        	currentPage = pageIndex;
        	if(totalResult == 0)
        	{
        		$('#tBodyList').html('<tr><td style="text-align:center;">No items.</td></tr>');	
        		// 没有记录的时候，隐藏分页插件
        		$("#pagination").hide();
        	} 
        	else 
        	{
        		// 创建分页
        		$("#pagination").show();
        		$("#pagination").pagination(totalResult, 
        		{
        			num_edge_entries: 1, //边缘页数
        			num_display_entries: 3, //主体页数
        			current_page:currentPage,
        			callback: getDataList,
        			items_per_page:showCount //每页显示10条
        		});
        	};
        },
        
		error:function(e)
		{
			 openAlert("加载数据错误！"); 
			 return;
		}
	});
} 

/**
 * 弹出选择用户模态窗口，添加用户
 */

function newUser()
{
	var param = new Array();//得到参数
	param.push(groupId);
	param.push(window);
	popUpPanel( BASE_PATH+"/groupManagement/addUserForGroup_sitemesh_popup.do", param,1000,570 );
	$("#" + groupId).trigger("click");
}

/**
 * 删除按钮事件
 */
function deleteUser()
{	
	if (chooseIds.length > 0) 
	{
		var usernames = new Array();
		 
		 for( var i = 0; i < chooseIds.length; i++ )
		 {
			 var username = $("#" + chooseIds[i]).find("input[name='hd_userName']").val();
			 // 拼接需要移除的用户集合，将转义用于分隔URI各个部件的标点符号
			 usernames.push(encodeURIComponent(username));
		 }
		 
		openConfirm("确认从组中移除选定的用户吗？",null, function()
		{
			// 调用后台插入方法，进行用户的删除操作
			$.ajax(
			{
				type: 'POST',
				url : BASE_PATH + "/groupManagement/deleteUsersFromGroup.do?username="+encodeURIComponent(usernames) + "&groupId=" + groupId,
				dataType:"json",
		        data:
		        {
		        },
				success : function(data) 
				{
					if(data == "success")
					{
						openAlert('移除用户成功',function()
						{
							// 删除用户成功后，清空之前已经选中的用户ID，重置chooseIds
							chooseIds = new Array();
							$("#" + groupId).trigger("click");							
						});	
					}
					else
					{
						openAlert('删除失败');
					}
				}
			});
		});
	} 
	else 
	{
		openAlert("请选择一个用户！");
	}
}

